
#ifndef __LIBERTY_LIBRARY_ASSETCACHEDDATA_H__
#define __LIBERTY_LIBRARY_ASSETCACHEDDATA_H__

#include <Liberty3D/Engine/Uuid.h>
#include <Liberty3D/Engine/ISerializable.h>
#include <Liberty3D/Library/MappedAsset.h>

namespace Liberty { namespace Library {
    /**
     * The AssetCacheData object basically contains information about
     * the object as it is in the depot. The information stored here
     * should be meaningful for others operation, such as building.
     *
     * One of the basic information stored about all objects, is the
     * direct dependancies. If the asset depends on another asset,
     * this object should contain that informations.
     * 
     * Other example, for an image, it should contain the size and pixel
     * format so when building, the compiler know if it can take the
     * image as-is, or it should either rescale it, or change it's pixel
     * format prior to assembling the asset in the build process.
     */
    class AssetCachedData : public MappedAsset {
    protected:
        std::vector<Liberty::Engine::Uuid> _uses;

    public:
        AssetCachedData();

    public:
        virtual void serializeEnd(Liberty::Engine::ISerializer*);
        virtual bool isNull() const;

    public:
        virtual void update(std::streambuf*);
    };
}}

#endif
